package com.chinatechstar.file.dto;

import com.chinatechstar.file.entity.SysFile;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;

import java.util.List;

/**
 * 树形目录DTO(sys_file)
 *
 * @author Rei
 * @version 1.0.0 2021-01-08
 */
public class SysDirTreeDTO implements java.io.Serializable {
    public static final long serialVersionUID = 6428344125704527754L;

    /**
     * 文件业务关联主键
     */
    private Long id;

    /**
     * 关联文件id
     */
    private Long fileId;

    /**
     * 文件仓储id
     */
    private Long fileFilestorageId;

    /**
     * 关联业务id
     */
    private Long fileBusiness;

    /**
     * 目录名称
     */
    private String fileDirName;

    /**
     * 文件父id
     */
    private Long filePid;

    /**
     * 父id链，用英文逗号分隔
     */
    private String filePidTree;

    /**
     * 文件虚拟路径(相对虚拟路径，包含目录)
     */
    private String fileVirtualPath;

    /**
     * 子目录列表
     */
    private List<SysFile> list;

    /**
     * 获取文件业务关联主键
     *
     * @return 文件业务关联主键
     */
    public Long getId() {
        return this.id;
    }

    /**
     * 设置文件业务关联主键
     *
     * @param id 文件业务关联主键
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取关联文件id
     *
     * @return 关联文件id
     */
    public Long getFileId() {
        return this.fileId;
    }

    /**
     * 设置关联文件id
     *
     * @param fileId 关联文件id
     */
    public void setFileId(Long fileId) {
        this.fileId = fileId;
    }

    /**
     * 获取文件仓储id
     *
     * @return 文件仓储id
     */
    public Long getFileFilestorageId() {
        return fileFilestorageId;
    }

    /**
     * 设置文件仓储id
     *
     * @param fileFilestorageId 文件仓储id
     */
    public void setFileFilestorageId(Long fileFilestorageId) {
        this.fileFilestorageId = fileFilestorageId;
    }

    /**
     * 获取关联业务id
     *
     * @return 关联业务id
     */
    public Long getFileBusiness() {
        return this.fileBusiness;
    }

    /**
     * 设置关联业务id
     *
     * @param fileBusiness 关联业务id
     */
    public void setFileBusiness(Long fileBusiness) {
        this.fileBusiness = fileBusiness;
    }

    /**
     * 获取目录名称
     *
     * @return 目录名称
     */
    public String getFileDirName() {
        return this.fileDirName;
    }

    /**
     * 设置目录名称
     *
     * @param fileDirName 目录名称
     */
    public void setFileDirName(String fileDirName) {
        this.fileDirName = fileDirName;
    }

    /**
     * 获取文件父id
     *
     * @return 文件父id
     */
    public Long getFilePid() {
        return this.filePid;
    }

    /**
     * 设置文件父id
     *
     * @param filePid 文件父id
     */
    public void setFilePid(Long filePid) {
        this.filePid = filePid;
    }

    /**
     * 获取父id链，用英文逗号分隔
     *
     * @return 父id链
     */
    public String getFilePidTree() {
        return this.filePidTree;
    }

    /**
     * 设置父id链，用英文逗号分隔
     *
     * @param filePidTree 父id链
     */
    public void setFilePidTree(String filePidTree) {
        this.filePidTree = filePidTree;
    }

    /**
     * 获取文件虚拟路径(相对虚拟路径，包含目录)
     *
     * @return 文件虚拟路径(相对虚拟路径
     */
    public String getFileVirtualPath() {
        return this.fileVirtualPath;
    }

    /**
     * 设置文件虚拟路径(相对虚拟路径，包含目录)
     *
     * @param fileVirtualPath 文件虚拟路径(相对虚拟路径
     */
    public void setFileVirtualPath(String fileVirtualPath) {
        this.fileVirtualPath = fileVirtualPath;
    }

    /**
     * 获取子目录列表
     *
     * @return 子目录列表
     */
    public List<SysFile> getList() {
        return list;
    }

    /**
     * 设置子目录列表
     *
     * @param list 子目录列表
     */
    public void setList(List<SysFile> list) {
        this.list = list;
    }

    @Override
    public boolean equals(Object obj) {
        return EqualsBuilder.reflectionEquals(obj, this);
    }

    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(this);
    }

    @Override
    public String toString() {
        return ReflectionToStringBuilder.toString(this);
    }
}
